Git branch


Posted by yunanpan on 2020-06-17

為什麼需要 branch?

在開發網站的新功能時,有時會需要中途去修一下 bug。如果用一條線的方式開發網站,就會出現「卡在一半的新功能和修好 bug」的不完整網頁。而開啟不同分支去處理不同功能,便可以避免此種狀況。在各自的 branch 完成功能後再 merge 回主要檔案才是完整的檔案。分支的方法也可應用在團隊分工上。


Git branch 相關指令

git branch -v: 查看目前有哪些分支,並且可以看現在位在哪條分支上。
git branch <branch-name>:新開分支。
git branch -d <branch-name>:刪除分支。
git checkout <branch-name>:切換分支。
git merge <branch-name>:把分支合併進目前所在的分支。
以上面的示意圖為例,M+A 其實就是位在 master 上,輸入 git merge <ann> 將 A 合併進 M 裡。
git branch -m <new-branch-name>:想改分支的名稱(需要先切換到要改名稱的分支上)。
git checkout <remote-branch>:抓遠端的分支。

如果 merge 遇到衝突時該怎麼辦?

總是會有那麼一個不小心,互相改到對方的檔案,造成 merge 時產生衝突。這時也別緊張,Git 很聰明,不會讓你巡遍兩個檔案內容玩大家來找碴。在 merge 發生衝突時,就會跳出警告,而且還會告訴你該怎麼做:fix conflicts and then commit the result.

上圖為打算 merge feature1 進 master,但是 index.html 內容有衝突。
此時可以選擇直接在 git-bash 上 vim index.html 修改:

或是使用慣用的編輯器修改:

兩者都會出現 <<<<<HEAD(目前的分支內容) 和 >>>>>feature1(準備併近來的分支內容),中間會用 ===== 的符號分割開,藉此顯示兩者有衝突的地方跟內容。比較後手動修成正確的版本存檔後,再 commit 就大功告成了。

如果 merge 遇到衝突時該怎麼辦?

而 |||||||| <版本號> 和 ===== 的版本號和之間則為開分支出去的那次 commit 的版本號及內容。可以說是 master 和 feature1 共同的祖先。

Git 官網上有詳細介紹(圖片截自上述 Git 官網):

典型的合併會用到的三個快照:要併入的分支、要被併入的分支、兩個分支的共同祖先。










Related Posts

JavaScript 變數( Variable )的辣

JavaScript 變數( Variable )的辣

Day 111

Day 111

Elevate Your Dermatology Practice with the Electric Dermatology Chair

Elevate Your Dermatology Practice with the Electric Dermatology Chair


Comments